package com.kotlin.demo.net;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

import java.io.IOException;

/**
 * 翻译接口 列表
 */
public class ApiTranslateList {

    //好用的免费API
    //https://suggest.taobao.com/sug?code=utf-8&q=man&callback=cb
    //https://api.uomg.com/api/long2dwz
    public static void main(String[] args) {
        testAsync();
    }

    /**
     * 静态内部类方式 单例模式
     */
    private static class RetrofitUtils {
        public static Retrofit getRetrofit() {
            return SingletonInternalClassHolder.instance;
        }

        private static class SingletonInternalClassHolder {
            private static final Retrofit instance = new Retrofit.Builder()
                    .baseUrl("http://127.0.0.1") //设置网络请求的Url地址
                    .addConverterFactory(GsonConverterFactory.create()) //设置数据解析器
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                    .build();
        }

    }

    /**
     * 测试异步请求
     */
    public static void testAsync() {
        Retrofit retrofit = RetrofitUtils.getRetrofit();
        //异步请求
        // 创建 网络请求接口 的实例
        TestRetrofit request = retrofit.create(TestRetrofit.class);
        //对 发送请求 进行封装
        Call<ResponseBody> call = request.getTest("urlcn", "http://qrpay.uomg.com");
        call.enqueue(new Callback<ResponseBody>() {
            //请求成功时回调
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                //请求处理,输出结果
                String res = response.body().toString();
                System.out.println("异步网络请求返回数据：" + res);
            }

            //请求失败时候的回调
            @Override
            public void onFailure(Call<ResponseBody> call, Throwable throwable) {
                System.out.println("连接失败");
            }
        });

    }

    /**
     * 测试同步请求
     */
    private static void testSync() {
        //同步请求
        try {
            Retrofit retrofit = RetrofitUtils.getRetrofit();
            //异步请求
            // 创建 网络请求接口 的实例
            TestRetrofit request = retrofit.create(TestRetrofit.class);
            //对 发送请求 进行封装
            Call<ResponseBody> call = request.getTest("urlcn", "http://qrpay.uomg.com");
            Response<ResponseBody> response = call.execute();
            System.out.println("同步请求网络数数据返回：" + response.body().toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 百度翻译
     */
    public static void getTranslate_baidu(String translateName) {
        //同步请求
//        try {
//            Retrofit retrofit = RetrofitUtils.getRetrofit();
//            //异步请求
//            // 创建 网络请求接口 的实例
//            TestRetrofit request = retrofit.create(TestRetrofit.class);
//            //对 发送请求 进行封装
//            Call<ResponseBody> call = request.getTranslate_baidu(translateName);
//            Response<ResponseBody> response = call.execute();
//            String data = response.body().toString();
//            if (netBack != null) {
//                netBack.back(data);
//            }
//            System.out.println("同步请求网络数数据返回：" + data);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        Request request = new Request.Builder()
//                .url("http://example.com") // 替换为你想要请求的 URL
//                .build();
//
//        client.newCall(request).enqueue(new Callback() {
//            @Override
//            public void onResponse(Call call, Response response) {
//                if (!response.isSuccessful()) {
//                    // 处理非成功的响应，例如 404 或 500
//                }
//
//                // 处理响应成功的情况
//                String responseData = response.body().toString();
//                // 在这里处理响应数据
//            }
//
//            @Override
//            public void onFailure(Call call, Throwable t) {
//
//            }
//
//        });

}



}
